From: Keir Fraser Date: Thu, 5 Mar 2009 15:02:02 +0000 (+0000) Subject: x86: Enable THERM_CONTROL_MSR write for dom0 even when cpufreq=xen X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13995^2~3 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=f78e2193b6409577314167ed9e077de7ac3e652f;p=xen.git x86: Enable THERM_CONTROL_MSR write for dom0 even when cpufreq=xen Signed-off-by: Wei Gang Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 59da034042..84f09c6c76 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -2187,7 +2187,6 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) case MSR_IA32_MPERF: case MSR_IA32_APERF: case MSR_IA32_PERF_CTL: - case MSR_IA32_THERM_CONTROL: if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ) goto fail; if ( !is_cpufreq_controller(v->domain) ) @@ -2195,6 +2194,14 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) if ( wrmsr_safe(regs->ecx, eax, edx) != 0 ) goto fail; break; + case MSR_IA32_THERM_CONTROL: + if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ) + goto fail; + if ( (v->domain->domain_id != 0) || !v->domain->is_pinned ) + break; + if ( wrmsr_safe(regs->ecx, eax, edx) != 0 ) + goto fail; + break; default: if ( wrmsr_hypervisor_regs(regs->ecx, eax, edx) ) break;